<?php

/**
 * 文件读写处理
 */
class BaseYspFile {

    private $errors;

    //判断文件是否存在
    function checkFileExists($file_path) {
        if (!file_exists($file_path)) {
            $this->errors[] = '对不起，您传入的不是一个存在的路径：' . $file_path;
        }
        if (!file_exists($file_path)) {
            $this->errors[] = '对不起，您传入的不是一个存在的文件：' . $file_path;
        }
    }

    /**
     * 判断文件是否可写
     * @param string $file_path 文件路径
     */
    function checkFileCanWrite($file_path) {
        if (!is_writeable($file_path)) {
            $this->errors[] = '对不起，该文件不可写：' . $file_path;
        }
    }

    /**
     * 判断文件是否可读
     * @param string $file_path 文件路径
     */
    function checkFileCanRead($file_path) {
        if (!is_readable($file_path)) {
            $this->errors[] = '对不起，该文件不可读：' . $file_path;
        }
    }

    /**
     * 创建多层目录
     * @param string $file_path 文件路径
     * @param int $mode 权限数值
     * @return boolean 返回true或false
     */
    function createDir($file_path, $mode = 0777) {
        if (empty($file_path)) {
            return false;
        }
        $dir_path_arr = explode('/', $file_path);
        array_push($dir_path_arr);
        $dir = implode('/', $dir_path_arr);
        if (file_exists($dir)) {
            return false;
        }
        $dir = str_replace('//', '/', $dir);
        $folderArray = explode("/", $dir);
        $folder = "";
        foreach ($folderArray as $folderOne) {
            $folder .= '/' . $folderOne;
            if (!file_exists($folder)) {
                @mkdir($folder);
                @chmod($folder, $mode);
            }
        }
        return true;
    }

    /**
     * 创建并将内容写入一个新文件
     * @param string $data 要写入文件的字符串
     * @return boolean 返回true或false
     */
    function createNewFile($file_path, $data) {
        if (!empty($data)) {
            return file_put_contents($file_path, $data);
        } else {
            return false;
        }
    }

    /**
     * 创建并将内容写入一个新文件
     * @param string $old_path 旧路径
     * @param string $new_path 新路径
     * @return boolean 返回true或false
     */
    function copyFile($old_path, $new_path) {
        return copy($old_path, $new_path);
    }

}
